package org.darcy.service.work;

import java.util.List;

import org.darcy.entity.work.WorkInstance;
import org.darcy.entity.work.WorkTask;
import org.darcy.framework.generic.GenericService;

/**
 * WorkTask服务接口
 */
public interface WorkTaskService extends GenericService<WorkTask> {

	/**
	 * 获取WorkTask详情
	 * 
	 * @param id 对象id
	 */
	WorkTask getDetail(Integer id);

	/**
	 * 根据工作项id获取存草稿状态的工作任务
	 * 
	 * @param workId 工作项id
	 */
	WorkTask getDraftTask(Integer workId);

	/**
	 * 根据工作项id，用户id获取抄送任务
	 * 
	 * @param workId 工作项id
	 * @param uid    用户id
	 */
	WorkTask getCCTask(Integer workId, Integer uid);

	/**
	 * 根据业务参数获取所有的工作任务
	 * 
	 * @param work_id 工作项id
	 */
	List<WorkTask> getTaskList(Integer work_id);

	/**
	 * 根据草稿状态工作任务获取待审批的工作任务
	 * 
	 * @param formType 业务类型
	 * @param formId   表单id
	 * @param status   审批状态
	 */
	WorkTask getApprovingTask(WorkTask draftTask);

	/**
	 * 处理工作任务
	 * 
	 * @param param 前端传入的工作任务参数
	 */
	void processWork(WorkInstance param);

	/**
	 * 根据业务参数获取工作任务详情
	 */
	WorkTask getBusinessTask(Integer work_id, Integer pid);

	/**
	 * 工作任务转交
	 * 
	 * @param taskId     任务id
	 * @param transferTo 转交人员
	 */
	WorkTask transfer(WorkTask task);

	/**
	 * 根据业务参数获取审批通过的工作任务
	 */
	WorkTask getApprovedTask(String formType, Integer formId);

}
